home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / bsd / ndbm.h < prev    next >
Text File  |  1990-01-22  |  2KB  |  74 lines

  1. /*
  2.  * Copyright (c) 1983 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  *
  6.  *    @(#)ndbm.h    5.1 (Berkeley) 5/30/85
  7.  */
  8.  
  9. /*
  10.  * Hashed key data base library.
  11.  */
  12. #define PBLKSIZ 1024
  13. #define DBLKSIZ 4096
  14.  
  15. typedef struct {
  16.     int    dbm_dirf;        /* open directory file */
  17.     int    dbm_pagf;        /* open page file */
  18.     int    dbm_flags;        /* flags, see below */
  19.     long    dbm_maxbno;        /* last ``bit'' in dir file */
  20.     long    dbm_bitno;        /* current bit number */
  21.     long    dbm_hmask;        /* hash mask */
  22.     long    dbm_blkptr;        /* current block for dbm_nextkey */
  23.     int    dbm_keyptr;        /* current key for dbm_nextkey */
  24.     long    dbm_blkno;        /* current page to read/write */
  25.     long    dbm_pagbno;        /* current page in pagbuf */
  26.     char    dbm_pagbuf[PBLKSIZ];    /* page file block buffer */
  27.     long    dbm_dirbno;        /* current block in dirbuf */
  28.     char    dbm_dirbuf[DBLKSIZ];    /* directory file block buffer */
  29. } DBM;
  30.  
  31. #define _DBM_RDONLY    0x1    /* data base open read-only */
  32. #define _DBM_IOERR    0x2    /* data base I/O error */
  33.  
  34. #define dbm_rdonly(db)    ((db)->dbm_flags & _DBM_RDONLY)
  35.  
  36. #define dbm_error(db)    ((db)->dbm_flags & _DBM_IOERR)
  37.     /* use this one at your own risk! */
  38. #define dbm_clearerr(db)    ((db)->dbm_flags &= ~_DBM_IOERR)
  39.  
  40. /* for flock(2) and fstat(2) */
  41. #define dbm_dirfno(db)    ((db)->dbm_dirf)
  42. #define dbm_pagfno(db)    ((db)->dbm_pagf)
  43.  
  44. typedef struct {
  45.     char    *dptr;
  46.     int    dsize;
  47. } datum;
  48.  
  49. /*
  50.  * flags to dbm_store()
  51.  */
  52. #define DBM_INSERT    0
  53. #define DBM_REPLACE    1
  54.  
  55. #ifdef __STRICT_BSD__
  56. DBM    *dbm_open();
  57. void    dbm_close();
  58. datum    dbm_fetch();
  59. datum    dbm_firstkey();
  60. datum    dbm_nextkey();
  61. long    dbm_forder();
  62. int    dbm_delete();
  63. int    dbm_store();
  64. #else
  65. DBM    *dbm_open(char *file, int flags, ...);
  66. void    dbm_close(DBM *db);
  67. datum    dbm_fetch(DBM *db, datum key);
  68. datum    dbm_firstkey(DBM *db);
  69. datum    dbm_nextkey(DBM *db);
  70. long    dbm_forder(DBM *db, datum key);
  71. int    dbm_delete(DBM *db, datum key);
  72. int    dbm_store(DBM *db, datum key, datum content, int flags);
  73. #endif __STRICT_BSD__
  74.